[2025-07-07] Simple-SSTI
π¦₯ λ³Έλ¬Έ
#!/usr/bin/python3
from flask import Flask, request, render_template, render_template_string, make_response, redirect, url_for
import socket
app = Flask(__name__)
try:
FLAG = open('./flag.txt', 'r').read()
except:
FLAG = '[**FLAG**]'
app.secret_key = FLAG
@app.route('/')
def index():
return render_template('index.html')
@app.errorhandler(404)
def Error404(e):
template = '''
<div class="center">
<h1>Page Not Found.</h1>
<h3>%s</h3>
</div>
''' % (request.path)
return render_template_string(template), 404
app.run(host='0.0.0.0', port=8000)
404κ° λ°μνλ©΄ ν΄λΉ <div>λ₯Ό μΆλ ₯νλ νμ΄μ§μ΄λ€. μ²μμλ {{FLAG}}λ₯Ό λ£μΌλ©΄ λλ κ±° μλκ°? λΌκ³ μκ°νλ€. νμ§λ§
μμ κ°μ΄ μ무 κ²λ λμ€μ§ μλλ€.
μ λ΅μ {{config}}λ₯Ό ν΅ν΄ μ΄ν리μΌμ΄μ μ€μ κ° μ€ secret_key κ°μ μμλ΄λ κ²μ΄λ€. κ·Όλ° μ {{FLAG}}μ {{config}} λͺ¨λ μ μ λ³μμΈλ° νλλ λκ³ νλλ μλ κΉ? {{config}}λ Jinja ν νλ¦Ώμκ² μλμΌλ‘ λκ²¨μ€ μ μλ μ μ λ³μμ΄λ€. νμ§λ§ {{FLAG}}λ μ μ λ³μμ΄μ§λ§ Jinjaμκ² λ겨주λ μ½λκ° νμνμ¬ FLAG = FLAGλΌλ κ²μ΄ μΆκ°λμΌ νλ€.
μ¦. μ 리ν΄λ³΄μλ©΄, {{config}}λ ν νλ¦Ώ μμ§λ μ΄λ―Έ μκ³ μλ μ μ λ³μμ΄λ―λ‘ μμ°μ€λ λ°μ΄ν°μ HTMLμ ν©μ³ 보λ΄μ£Όμ§λ§ {{FLAG}}λ νμ΄μ¬μ μλ μ μ λ³μμ΄μ§λ§ ν νλ¦Ώ μμ§μ FLAGλΌλ λ³μκ° μ μ λ³μ FLAGμμ μλ €μ£Όλ μ½λκ° μμ΄μΌ νλ€λ κ²μ΄λ€.
Leave a comment